SUBROUTINE XCHECK
!
! Verwendungszweck:
!   Test der Plausibilitaet des Variablensatzes X, der Loesung aus dem Newton-Verfahren
!
!-----------------------------------------------------------------------
! Interne Variable:
!
!   idx  : Schleifenindex
!   gap  : Gitterweite > 0
!

      use config,  only : np, rkind
      use global,  only : loglevel, divergenz
      use primvar, only : X, MR, MD, ME, MJ
      use physco,  only : z0

      implicit none

      integer            :: idx
      real(kind = rkind) :: gap(3:np-3)

      divergenz = .false.

!-----------------------------------------------------------------------
!    Test der Vorzeichen von Dichte & innere Energie
!-----------------------------------------------------------------------
! muss auch in den Pseudozellen passen

      !keine Skalare Werte fuer idx = np

      if ( any( X(MD,1:np-1) < z0 ) ) then
         if (loglevel >= 1) write(66,"(a,i4,a)")"Xcheck.f90:   negative Dichte aufgetreten"
         divergenz = .true.
      end if
      if ( any( X(ME,1:np-1) < z0 ) ) then
         if (loglevel >= 1) write(66,"(a,i4,a)")"Xcheck.f90:   negative innere Energie aufgetreten"
         divergenz = .true.
      end if
      if ( any( X(MJ,1:np-1) < z0 ) ) then
         if (loglevel >= 1) write(66,"(a,i4,a)")"Xcheck.f90:   negative Strahlungsenergiedichte aufgetreten"
         divergenz = .true.
      end if

!-----------------------------------------------------------------------
!    Test der Gitterintegritaet
!-----------------------------------------------------------------------

      do idx = 3,np-3
         gap(idx) = X(MR,idx+1) - X(MR,idx)
      end do

      if ( any( gap(:) < z0 ) ) then
         if (loglevel >= 1) write(66,"(a)")"Xcheck.f90:   Gitterpunkte haben sich ueberholt"
         divergenz = .true.
      end if


END SUBROUTINE XCHECK
